package com.zheng.common.base;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 降级实现BaseService抽象类
 * Created by ZhangShuzheng on 2017/02/14.
 */
public abstract class BaseServiceMock<M extends BaseMapper<T>, T> implements BaseService<T> {

	/**
	 * <p>
	 * 插入一条记录（选择字段，策略插入）
	 * </p>
	 *
	 * @param entity 实体对象
	 * @return boolean
	 */
	@Override
	public boolean insert(T entity){return false;}

	/**
	 * <p>
	 * 插入一条记录（全部字段）
	 * </p>
	 *
	 * @param entity 实体对象
	 * @return boolean
	 */
	@Override
	public boolean insertAllColumn(T entity){return false;}

	/**
	 * <p>
	 * 插入（批量），该方法不适合 Oracle
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @return boolean
	 */
	@Override
	public boolean insertBatch(List<T> entityList){return false;}

	/**
	 * <p>
	 * 插入（批量）
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @param batchSize  插入批次数量
	 * @return boolean
	 */
	@Override
	public boolean insertBatch(List<T> entityList, int batchSize){return false;}

	/**
	 * <p>
	 * 批量修改插入
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @return boolean
	 */
	@Override
	public boolean insertOrUpdateBatch(List<T> entityList){return false;}

	/**
	 * <p>
	 * 批量修改插入
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @param batchSize
	 * @return boolean
	 */
	@Override
	public boolean insertOrUpdateBatch(List<T> entityList, int batchSize){return false;}

	/**
	 * <p>
	 * 批量修改或插入全部字段
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @return boolean
	 */
	@Override
	public boolean insertOrUpdateAllColumnBatch(List<T> entityList){return false;}

	/**
	 * 批量修改或插入全部字段
	 *
	 * @param entityList 实体对象列表
	 * @param batchSize
	 * @return boolean
	 */
	@Override
	public boolean insertOrUpdateAllColumnBatch(List<T> entityList, int batchSize){return false;}

	/**
	 * <p>
	 * 根据 ID 删除
	 * </p>
	 *
	 * @param id 主键ID
	 * @return boolean
	 */
	@Override
	public boolean deleteById(Serializable id){return false;}

	/**
	 * <p>
	 * 根据 columnMap 条件，删除记录
	 * </p>
	 *
	 * @param columnMap 表字段 map 对象
	 * @return boolean
	 */
	@Override
	public boolean deleteByMap(Map<String, Object> columnMap){return false;}

	/**
	 * <p>
	 * 根据 entity 条件，删除记录
	 * </p>
	 *
	 * @param wrapper 实体包装类 {@link Wrapper}
	 * @return boolean
	 */
	@Override
	public boolean delete(Wrapper<T> wrapper){return false;}

	/**
	 * <p>
	 * 删除（根据ID 批量删除）
	 * </p>
	 *
	 * @param idList 主键ID列表
	 * @return boolean
	 */
	@Override
	public boolean deleteBatchIds(Collection<? extends Serializable> idList){return false;}


	/**
	 * <p>
	 * 删除（根据ID 批量删除）
	 * </p>
	 *
	 * @param ids 主键ID字符串，以“-”分割，如“1-2-3-6”
	 * @return boolean
	 */
	@Override
	public boolean deleteBatchIds(String ids){return false;}

	/**
	 * <p>
	 * 根据 ID 选择修改
	 * </p>
	 *
	 * @param entity 实体对象
	 * @return boolean
	 */
	@Override
	public boolean updateById(T entity){return false;}

	/**
	 * <p>
	 * 根据 ID 修改全部字段
	 * </p>
	 *
	 * @param entity 实体对象
	 * @return boolean
	 */
	@Override
	public boolean updateAllColumnById(T entity){return false;}

	/**
	 * <p>
	 * 根据 whereEntity 条件，更新记录
	 * </p>
	 *
	 * @param entity  实体对象
	 * @param wrapper 实体包装类 {@link Wrapper}
	 * @return boolean
	 */
	@Override
	public boolean update(T entity, Wrapper<T> wrapper){return false;}

	/**
	 * <p>
	 * 根据ID 批量更新
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @return boolean
	 */
	@Override
	public boolean updateBatchById(List<T> entityList){return false;}

	/**
	 * <p>
	 * 根据ID 批量更新
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @param batchSize  更新批次数量
	 * @return boolean
	 */
	@Override
	public boolean updateBatchById(List<T> entityList, int batchSize){return false;}

	/**
	 * <p>
	 * 根据ID 批量更新全部字段
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @return boolean
	 */
	@Override
	public boolean updateAllColumnBatchById(List<T> entityList){return false;}

	/**
	 * <p>
	 * 根据ID 批量更新全部字段
	 * </p>
	 *
	 * @param entityList 实体对象列表
	 * @param batchSize  更新批次数量
	 * @return boolean
	 */
	@Override
	public boolean updateAllColumnBatchById(List<T> entityList, int batchSize){return false;}

	/**
	 * <p>
	 * TableId 注解存在更新记录，否插入一条记录
	 * </p>
	 *
	 * @param entity 实体对象
	 * @return boolean
	 */
	@Override
	public boolean insertOrUpdate(T entity){return false;}

	/**
	 * 插入或修改一条记录的全部字段
	 *
	 * @param entity 实体对象
	 * @return boolean
	 */
	@Override
	public boolean insertOrUpdateAllColumn(T entity){return false;}

	/**
	 * <p>
	 * 根据 ID 查询
	 * </p>
	 *
	 * @param id 主键ID
	 * @return T
	 */
	@Override
	public T selectById(Serializable id){return null;}

	/**
	 * <p>
	 * 查询（根据ID 批量查询）
	 * </p>
	 *
	 * @param idList 主键ID列表
	 * @return List<T>
	 */
	@Override
	public List<T> selectBatchIds(Collection<? extends Serializable> idList){return null;}

	/**
	 * <p>
	 * 查询（根据 columnMap 条件）
	 * </p>
	 *
	 * @param columnMap 表字段 map 对象
	 * @return List<T>
	 */
	@Override
	public List<T> selectByMap(Map<String, Object> columnMap){return null;}

	/**
	 * <p>
	 * 根据 Wrapper，查询一条记录
	 * </p>
	 *
	 * @param wrapper 实体对象
	 * @return T
	 */
	@Override
	public T selectOne(Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 根据 Wrapper，查询一条记录
	 * </p>
	 *
	 * @param wrapper {@link Wrapper}
	 * @return Map<String,Object>
	 */
	@Override
	public Map<String, Object> selectMap(Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 根据 Wrapper，查询一条记录
	 * </p>
	 *
	 * @param wrapper {@link Wrapper}
	 * @return Object
	 */
	@Override
	public Object selectObj(Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 根据 Wrapper 条件，查询总记录数
	 * </p>
	 *
	 * @param wrapper 实体对象
	 * @return int
	 */
	@Override
	public int selectCount(Wrapper<T> wrapper){return -1;}

	/**
	 * <p>
	 * 查询列表
	 * </p>
	 *
	 * @param wrapper 实体包装类 {@link Wrapper}
	 * @return
	 */
	@Override
	public List<T> selectList(Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 翻页查询
	 * </p>
	 *
	 * @param page 翻页对象
	 * @return
	 */
	@Override
	public Page<T> selectPage(Page<T> page){return null;}

	/**
	 * <p>
	 * 查询列表
	 * </p>
	 *
	 * @param wrapper {@link Wrapper}
	 * @return
	 */
	@Override
	public List<Map<String, Object>> selectMaps(Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 根据 Wrapper 条件，查询全部记录
	 * </p>
	 *
	 * @param wrapper 实体对象封装操作类（可以为 null）
	 * @return List<Object>
	 */
	@Override
	public List<Object> selectObjs(Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 翻页查询
	 * </p>
	 *
	 * @param page    翻页对象
	 * @param wrapper {@link Wrapper}
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	@Override
	public Page<Map<String, Object>> selectMapsPage(Page page, Wrapper<T> wrapper){return null;}

	/**
	 * <p>
	 * 翻页查询
	 * </p>
	 *
	 * @param page    翻页对象
	 * @param wrapper 实体包装类 {@link Wrapper}
	 * @return
	 */
	@Override
	public
	Page<T> selectPage(Page<T> page, Wrapper<T> wrapper){return null;}


	@Override
	public void initMapper() {}
}